package day4;

import java.util.Scanner;

/*
对ATM机取款过程进行简单模拟，一开始让用户输入密码，最多输入3次，
每次提示剩余机会次数，第三次输入错误直接提示"密码错误次数已达上限，请取卡！"。
当用户密码输入正确之后，开始取钱，只能取100的倍数，
并提示本次累计取了多少钱，如果输入错误，则提示用户"请输入正确的金额数"，
可重复取，但是上限为10000，如11000则只取10000并提示"当前金额已达上限，
还有1000无法取出，请联系工作人员"
 */
public class HomeWork1 {
    public static void main(String[] args) {
        String password = "123456"; // 预设密码
        int max = 10000; // 每日的取款上限金额
        int sum = 0; // 记录累计取款金额
        Scanner input = new Scanner(System.in);
        int count = 3; // 密码剩余次数
        for (int i = count; i > 0; ) {
            i--;
            System.out.print("请输入密码:");
            String inputPassword = input.next();
            // 密码正确，跳出循环
            if (password.equals(inputPassword)) break;
            System.out.println("密码输入错误,您今天的剩余尝试次数为：" + i + "次.");
            if (i == 0) System.out.println("密码错误次数已达上限，请取卡！");
        }
        // 密码正确的代码段
        while (true) {
            System.out.print("请输入要取款的金额(100的整数):");
            int inputMoney = input.nextInt();
            if (inputMoney % 100 != 0 && inputMoney > 0) {
                System.out.println("请输入正确的金额数!");
                continue;
            }
            // 如果取的钱比剩余金额大，那么只能取出剩余金额。所以把max给到inputMoney
            if(inputMoney > max) {
                int temp = inputMoney; // 暂存用户超出的原金额，比如10000
                inputMoney = max; // 因为超出去了，所以今天能取的最大值就是max剩余额度
                max -= temp; // 扣除剩下的剩余额度， 这里超出的会运算为负数
            } else {
                // 取款的金额在额度以内，取款扣除金额
                max -= inputMoney;
            }
            sum += inputMoney; // 记录累计取款金额
            System.out.println("成功取款：" + inputMoney + ",您今日累计取款金额为：" + sum);
            if (max < 0) {
                int temp = -max; // 负数转正数
                System.out.println("当前金额已达上限，还有" + temp + "无法取出，请联系工作人员");
                System.out.println("系统退出，谢谢！");
                break;
            }
        }
    }
}
